Zavreni dockovaneho framu

Otázka od: Martin Pisarik

6. 9. 2004 15:59

Ahoj *

Prosim o radu. Jak poznat, ze uzivatel zavrel (tim malym krizkem)
nadockovanou a nebo floating vec (v mem pripade frame). Zadnou udalost jsem
nenasel a na netu pouze spoustu komponent, ktere to resi. Ja chci ale
vystacit bez nich.
Co s tim?
Dik moc.



Odpovedá: Ondrej Kelle

7. 9. 2004 11:54

> Ahoj *
>
> Prosim o radu. Jak poznat, ze uzivatel zavrel (tim malym krizkem)
> nadockovanou a nebo floating vec (v mem pripade frame).
> Zadnou udalost jsem
> nenasel a na netu pouze spoustu komponent, ktere to resi. Ja chci ale
> vystacit bez nich.
> Co s tim?
> Dik moc.

Zbezne som nazrel do zdrojakov a myslim, ze relevantny kod je v
TDockTree.WindowProc:

WM_LBUTTONUP:
  ...
  if TempZone.FChildControl is TCustomForm then
    TCustomForm(FChildControl).Close
  else
    TempZone.FChildControl.Visible := False;

tzn. v pripade potomkov TFrame by mohlo fungovat odchytenie spravy
CM_VISIBLECHANGED, a WParam = 0. Samozrejme, tato sprava bude vyvolana pri
kazdej zmene Visible, takze bude dobre napisat si tam este kontroly, ci je
ten frame prave zadokovany, nie je floating atd.
Nemam to odskusane.

HTH
TOndrej